// @/constants/bank.js

/**
 * 银行信息列表
 * 包含银行名称、logo文件名、卡号前缀和品牌色
 */
const bankInfoList = [
  {
    name: '中国工商银行',
    logo: '中国工商银行logo.svg',
    prefixes: ['622202', '622203', '622208'],
    color: '#E50012',
  },
  {
    name: '中国建设银行',
    logo: '中国建设银行logo.svg',
    prefixes: ['622700', '621700', '623668'],
    color: '#003A8D',
  },
  {
    name: '中国农业银行',
    logo: '中国农业银行logo.svg',
    prefixes: ['622848', '622849'],
    color: '#009966',
  },
  {
    name: '中国银行',
    logo: '中国银行logo.svg',
    prefixes: ['621661', '621663', '621665'],
    color: '#A71E32',
  },
  {
    name: '中国邮政储蓄银行',
    logo: '中国邮政储蓄银行logo.svg',
    prefixes: ['622188', '955100', '622150'],
    color: '#007A3D',
  },
]

// 使用 Vite 的 import.meta.glob 功能动态导入所有银行 logo
// { eager: true } 表示立即加载所有模块
// { as: 'url' } 表示以 URL 形式导入，方便在 <img> src 中使用
const bankLogos = import.meta.glob('@/assets/bank-icon/*.svg', { eager: true, as: 'url' })

// 创建一个从 logo 文件名到其 URL 的映射
const logoUrlMap = Object.entries(bankLogos).reduce((acc, [path, url]) => {
  const fileName = path.split('/').pop()
  acc[fileName] = url
  return acc
}, {})

/**
 * 默认银行信息
 */
const defaultBankInfo = {
  name: '未知银行',
  logo: null,
  color: '#A9A9A9', // 深灰色
}

/**
 * 根据银行卡号获取银行信息（名称、logo、颜色）
 * @param {string} cardNumber - 银行卡号
 * @returns {{name: string, logo: string|null, color: string}} 银行信息
 */
export const getBankInfoByCardNumber = (cardNumber) => {
  if (!cardNumber || typeof cardNumber !== 'string') {
    return defaultBankInfo
  }

  // 查找匹配的银行信息
  const foundBank = bankInfoList.find((bank) =>
    bank.prefixes.some((prefix) => cardNumber.startsWith(prefix)),
  )

  if (foundBank) {
    return {
      name: foundBank.name,
      logo: logoUrlMap[foundBank.logo] || null,
      color: foundBank.color,
    }
  }

  return defaultBankInfo
}
